import api from '../../../services/api'

Page({
  data: {
    // 历史记录数据
    historyList: [],
    pageNo: 1,
    hasMore: true,
    loading: false,
    
    // 预览弹窗
    showPreview: false,
    previewData: null
  },

  onLoad(options) {
    // 页面加载时获取历史记录
    this.loadHistory()
  },

  onShow() {
    // 页面显示时刷新数据（从改色页面返回时可能有新的渲染记录）
    this.refreshHistory()
  },

  /**
   * 加载历史记录
   */
  async loadHistory() {
    if (this.data.loading || !this.data.hasMore) return
    
    this.setData({ loading: true })
    
    try {
      const params = {
        pageNo: this.data.pageNo
      }
      
      const res = await api.colorChange.getColorChangeHistory(params)
      
      if (res.status === 200 && res.data) {
        const newHistory = res.data || []
        const allHistory = this.data.pageNo === 1 ? newHistory : [...this.data.historyList, ...newHistory]
        
        // 处理时间格式
        const processedHistory = allHistory.map(item => ({
          ...item,
          createDate: this.formatDate(item.createDate),
          updateDate: this.formatDate(item.updateDate)
        }))
        
        this.setData({
          historyList: processedHistory,
          hasMore: newHistory.length === 10, // 每页10条，如果不足10条说明没有更多了
          pageNo: this.data.pageNo + 1
        })
      } else {
        throw new Error(res.message || '获取历史记录失败')
      }
    } catch (error) {
      console.error('加载历史记录失败:', error)
      wx.showToast({
        title: '加载失败',
        icon: 'error',
        duration: 2000
      })
    } finally {
      this.setData({ loading: false })
    }
  },

  /**
   * 刷新历史记录
   */
  refreshHistory() {
    this.setData({
      historyList: [],
      pageNo: 1,
      hasMore: true
    })
    this.loadHistory()
  },

  /**
   * 加载更多历史记录
   */
  loadMoreHistory() {
    this.loadHistory()
  },

  /**
   * 查看详情
   */
  viewDetail(e) {
    const item = e.currentTarget.dataset.item
    
    if (item.status === 1) {
      // 如果渲染完成，直接显示预览
      this.previewResult(e)
    } else {
      // 显示详细信息
      wx.showModal({
        title: '渲染详情',
        content: `状态：${this.getStatusText(item.status)}\n颜色：${item.colorName || '未知'}\n提交时间：${item.createDate}`,
        showCancel: false,
        confirmText: '确定'
      })
    }
  },

  /**
   * 预览效果
   */
  previewResult(e) {
    const item = e.currentTarget.dataset.item
    
    if (item.status !== 1 || !item.convertImgUrl) {
      wx.showToast({
        title: '渲染未完成',
        icon: 'error',
        duration: 2000
      })
      return
    }
    
    this.setData({
      showPreview: true,
      previewData: item
    })
  },

  /**
   * 关闭预览
   */
  closePreview() {
    this.setData({
      showPreview: false,
      previewData: null
    })
  },

  /**
   * 重新渲染
   */
  async retryRender(e) {
    const item = e.currentTarget.dataset.item
    
    wx.showModal({
      title: '重新渲染',
      content: '确定要重新渲染这张图片吗？',
      success: async (res) => {
        if (res.confirm) {
          try {
            wx.showLoading({
              title: '提交渲染中...',
              mask: true
            })
            
            const params = {
              carImgUrl: item.carImgUrl,
              colorCardId: item.colorCardId
            }
            
            const renderRes = await api.colorChange.saveColorChange(params)
            
            if (renderRes.status === 200) {
              wx.hideLoading()
              wx.showToast({
                title: '重新渲染已提交',
                icon: 'success',
                duration: 2000
              })
              
              // 刷新历史记录
              setTimeout(() => {
                this.refreshHistory()
              }, 1000)
            } else {
              throw new Error(renderRes.message || '提交失败')
            }
          } catch (error) {
            wx.hideLoading()
            console.error('重新渲染失败:', error)
            wx.showToast({
              title: error.message || '重新渲染失败',
              icon: 'error',
              duration: 2000
            })
          }
        }
      }
    })
  },

  /**
   * 删除记录
   */
  deleteRecord(e) {
    const id = e.currentTarget.dataset.id
    
    wx.showModal({
      title: '删除记录',
      content: '确定要删除这条渲染记录吗？删除后无法恢复。',
      confirmColor: '#DC3545',
      success: (res) => {
        if (res.confirm) {
          // 从列表中移除该记录
          const newHistoryList = this.data.historyList.filter(item => item.id !== id)
          this.setData({
            historyList: newHistoryList
          })
          
          wx.showToast({
            title: '删除成功',
            icon: 'success',
            duration: 1500
          })
          
          // 注意：这里只是前端删除，如果需要后端删除，需要调用相应的API
        }
      }
    })
  },

  /**
   * 跳转到改色页面
   */
  goToColorChange() {
    wx.navigateBack()
  },

  /**
   * 格式化日期
   */
  formatDate(dateStr) {
    if (!dateStr) return ''
    
    try {
      const date = new Date(dateStr)
      const year = date.getFullYear()
      const month = String(date.getMonth() + 1).padStart(2, '0')
      const day = String(date.getDate()).padStart(2, '0')
      const hours = String(date.getHours()).padStart(2, '0')
      const minutes = String(date.getMinutes()).padStart(2, '0')
      
      return `${year}-${month}-${day} ${hours}:${minutes}`
    } catch (error) {
      return dateStr
    }
  },

  /**
   * 获取状态文本
   */
  getStatusText(status) {
    switch (status) {
      case 0: return '渲染中'
      case 1: return '已完成'
      case 2: return '渲染失败'
      default: return '未知状态'
    }
  },

  /**
   * 下拉刷新
   */
  onPullDownRefresh() {
    this.refreshHistory()
    wx.stopPullDownRefresh()
  },

  /**
   * 页面分享
   */
  onShareAppMessage() {
    return {
      title: 'KSG汽车改色渲染历史',
      path: '/pages/color-change/index',
      imageUrl: '/images/share-color-change.png'
    }
  }
}) 